package com.marvels.common.dto;

import java.io.Serializable;
import java.util.HashMap;

import com.alibaba.fastjson.JSON;
import com.marvels.common.constants.AppCode;

/**
 * 返回给前端的公共实体类
 * 
 * @title FintechResult
 * @author tuxu
 * @date 2018年10月1日
 */
public class FintechResult implements Serializable {

	private static final long serialVersionUID = -7984302715541084936L;
	/**
	 * 返回给前端的编码
	 */
	private String code;
	/**
	 * 返回给前端编码对应的信息
	 */
	private String message = "";
	/**
	 * 返回给前端的业务数据
	 */
	private Object data;

	/**
	 * 返回给前端的结果
	 * 
	 * @param code
	 *            编码
	 * @param message
	 *            信息
	 * @param data
	 *            业务数据
	 * @return
	 */
	public static FintechResult getResult(String code, String message, Object data) {
		FintechResult fintechResult = new FintechResult();
		fintechResult.setCode(code);
		fintechResult.setMessage(message);
		if (data == null) {
			data = new HashMap<String, Object>(1);
		}
		fintechResult.setData(data);
		return fintechResult;
	}

	/**
	 * 返回给前端的结果 -- 自定义信息
	 * 
	 * @param code
	 * @param message
	 * @return
	 */
	public static FintechResult getResult(String code, String message) {
		return getResult(code, message, null);
	}

	/**
	 * 操作成功
	 * 
	 * @return
	 */
	public static FintechResult getSuccessResult() {
		return getSuccessResult(AppCode.SUCCESS.getMessage());
	}

	/**
	 * 操作成功 -- 自定义信息
	 * 
	 * @param message
	 * @return
	 */
	public static FintechResult getSuccessResult(String message) {
		return getResult(AppCode.SUCCESS.getCode(), message);
	}

	/**
	 * 操作成功 -- 返回业务数据
	 * 
	 * @param data
	 * @return
	 */
	public static FintechResult getSuccessResultWithData(Object data) {
		return getResult(AppCode.SUCCESS.getCode(), AppCode.SUCCESS.getMessage(), data);
	}

	/**
	 * 操作失败
	 * 
	 * @return
	 */
	public static FintechResult getFailResult() {
		return getFailResult(AppCode.FAIL.getMessage());
	}

	/**
	 * 操作失败 -- 自定义信息
	 * 
	 * @return
	 */
	public static FintechResult getFailResult(String message) {
		return getResult(AppCode.FAIL.getCode(), message);
	}

	/**
	 * 登陆失效
	 * 
	 * @return
	 */
	public static FintechResult getLoginExpireResult() {
		return getLoginExpireResult(AppCode.LOGIN_EXPIRE.getMessage());
	}

	/**
	 * 登陆失效 -- 自定义信息
	 * 
	 * @param message
	 * @return
	 */
	public static FintechResult getLoginExpireResult(String message) {
		return getResult(AppCode.LOGIN_EXPIRE.getCode(), message);
	}

	/**
	 * 未实名认证
	 * 
	 * @return
	 */
	public static FintechResult getNoVerifyResult() {
		return getNoVerifyResult(AppCode.NO_VERIFY.getMessage());
	}

	/**
	 * 未实名认证 -- 自定义信息
	 * 
	 * @param message
	 * @return
	 */
	public static FintechResult getNoVerifyResult(String message) {
		return getResult(AppCode.NO_VERIFY.getCode(), message);
	}

	/**
	 * 未人脸视别
	 * 
	 * @return
	 */
	public static FintechResult getNoFaceVerifyResult() {
		return getNoFaceVerifyResult(AppCode.NO_FACE_VERIFY.getMessage());
	}

	/**
	 * 未人脸视别 -- 自定义信息
	 * 
	 * @param message
	 * @return
	 */
	public static FintechResult getNoFaceVerifyResult(String message) {
		return getResult(AppCode.NO_FACE_VERIFY.getCode(), message);
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	@Override
	public String toString() {
		return JSON.toJSONString(this);
	}
}
